On the Internet or World Wide Web, information is exchanged through the request-response cycle of the Hypertext Transfer Protocol (HTTP). For example, a client may initiate the cycle by submitting a request for information to a server. The request may be for a static page (such as HTML or VXML), a dynamic page (such as JSP, ASP or PHP) or a request that a particular application (such as a servlet) be executed to generate a return page. The server, upon receiving such a request from the client, performs the necessary tasks to generate the return page, such as retrieving the requested page or application, executing as required, accessing databases if needed, establishing connections to other server, etc. When the server obtains the necessary information, the server transmits a response to the client, completing the request-response cycle.
The request-response sequence established between the client and server is referred to as a “roundtrip”, and is carried out for each request that a client makes. A server may service multiple requests from a single client, or alternatively, may be configured to handle request from multiple clients. In each instance, every request that a server receives must be serviced independently.
Single-pass execution of server-side dynamic pages is known in the art as disclosed in Published U.S. patent application No. 2003/0009519 (James A. Gosling, published on Jan. 9, 2003) which describes a method and apparatus for operating a local server computer of a client-server network including a technique to receive a request from a client computer of the client-server network. A determination is made whether the request requires dynamically generated information from a servlet object of the client-server network. If so, a specified servlet object corresponding to the request may be uploaded from a remote server computer of the client-server network. The specified servlet object is then executed to obtain dynamically generated information corresponding to the request.
The power of server-side pages and scripting to develop web applications comes from their ability to allow applications to leverage speed, reliability and security of server-side components, and is emerging as a popular technique for the development of voice applications. The server-side dynamic pages may be handled by a dynamic webcontent execution environment, here referred to as a container. The word “container” is commonly used to refer to mainly the dynamic webcontent execution environment for servlets and JSPs but hereinafter will also be used with reference to other dynamic pages like ASPs and PHPs to ensure consistent terminology. Similarly, the term “dynamic page” is used define the general class of server-side pages, such as ASPs, JSPs, PHPs as well as servlets, to which the present invention is application. The container receives and parses requests from clients regarding dynamic pages, transmits responses to clients based on the results of the dynamic pages and maintains state of the server-side dynamic pages. The container typically works in conjunction with an external webserver which receives HTTP requests from a client which are forwarded to the container if necessary. An example of a suitable container titled “How Servlet Containers Work” may be accessed online at http://www.onjava.com/pub/a/onjava/2003/05/14/java_webserver.html.
The container is also responsible for the execution of the appropriate servlet, JSP, PHP or ASP. Referring particularly to the execution of a servlet as an illustrative example, the init method is called once by the container after the servlet class has been instantiated to indicate to the servlet that it is being placed in service. The init method must complete successfully before the servlet may receive any requests. The container then calls the service method to allow the servlet to respond to a request. During execution of the service method, the client typically cannot affect the servlet execution, nor can the servlet request any additional information from the client. Once execution is complete, the container calls the destroy method before removing the servlet instance from service. After returning from the service method of the servlet, the container constructs and transmits the response to the client based on the result of the servlet. The connection to the web server is then terminated.
The above execution method works well for users utilizing visual prompts for information, such as Graphical User Interfaces (GUIs), which are spatial in nature. Unfortunately, the temporal nature of speech application interfaces means that the traditional single-pass execution is not well suited. Where a client is required to provide multiple fields of information, such as in an online bill payment application, the inputted data (such as credit card number and expiry date) is often validated using server-side components which make calls to databases. The GUI based application allows information to be gathered spatially and is validated by a server after submission. If any or all of the information is not valid a separate response page is returned to inform the client of the problem. However, for a voice application, information is collected temporally over a period of time using a series of question-answer-confirmation steps. An interface of this type requires that a user be informed immediately if some information is invalid. Execution of voice application using the traditional single-pass approach is cumbersome and would result in frustration for users who would be required to verbally re-enter all information before another attempt at verification could occur.
It is an object of the present invention to at least reduce one or more of the foregoing problems.